مؤشر محسّن لقياس الغطاء النباتي في البيئات ذات ظهور التربة (Soil background). يقلّل تأثير انعكاس التربة مقارنةً بـ NDVI/SAVI، فيوفّر تقديراً أكثر استقرارًا لكثافة الغطاء النباتي خصوصًا عند الغطاء الخفيف إلى المتوسط.
MSAVI2 = [ 2·NIR + 1 − √( (2·NIR + 1)² − 8·(NIR − RED) ) ] / 2
// MSAVI2 for any drawn AOI — Sentinel-2 L2A
// 1) Open code.earthengine.google.com → New Script
// 2) Paste, draw your AOI (geometry), then Run → Export
var aoi = (typeof geometry !== 'undefined') ? geometry : /* fallback */ ee.Geometry.Point([31.2357, 30.0444]).buffer(5000);
// Sentinel-2 Surface Reflectance
var s2 = ee.ImageCollection('COPERNICUS/S2_SR')
.filterBounds(aoi)
.filterDate('2023-01-01', '2025-12-31')
.filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 20))
// اجعل المجموعة متجانسة
.select(['B4','B8']);
// تركيب وسيط وخفض للمنطقة
var img = s2.median().clip(aoi);
// MSAVI2 = [ 2*NIR + 1 - sqrt( (2*NIR + 1)^2 - 8*(NIR - RED) ) ] / 2
var NIR = img.select('B8');
var RED = img.select('B4');
var msavi2 = NIR.multiply(2).add(1)
.subtract( (NIR.multiply(2).add(1)).pow(2).subtract( (NIR.subtract(RED)).multiply(8) ).sqrt() )
.divide(2)
.rename('MSAVI2');
// Visualization
Map.centerObject(aoi, 11);
var viz = {min: 0.0, max: 1.0, palette: ['#2b6cb0','#88c0d0','#e5e9f0','#a7f3d0','#34d399','#059669']};
Map.addLayer(msavi2, viz, 'MSAVI2');
// Export to Google Drive
Export.image.toDrive({
image: msavi2,
description: 'MSAVI2_export',
fileNamePrefix: 'MSAVI2_AOI',
region: aoi,
scale: 10,
crs: 'EPSG:4326',
maxPixels: 1e13
});
.select(['B4','B8']) كما في الكود.CLOUDY_PIXEL_PERCENTAGE أو استخدم قناع SCL.B4 (Red) و B5 (NIR) وعدّل scale إلى 30م.